home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / UTILS / AMOS3.DMS / AMOS3.adf / Map_View.AMOS / Map_View.amosSourceCode
AMOS Source Code  |  1978-10-10  |  4KB  |  131 lines

  1. Rem ---------------------------------------------------------  
  2. Rem -              TAME (Total Amiga Map Editor)            -
  3. Rem -                                                       -
  4. Rem -             Programmed by Aaron Fothergill            -  
  5. Rem -                (c) Mandarin / Jawx 1990               -
  6. Rem ---------------------------------------------------------
  7. MXLN=10
  8. Rem screen height and width
  9. SCH=200
  10. SCW=320
  11. Dir$="AMOS_DATA:MAGIC_FOREST/"
  12. OK=0
  13. F$=Fsel$("*.ABK","MFTILES.ABK","Pick a tile screen")
  14. F$=Upper$(F$)
  15. If F$="" Then End 
  16. If Exist(F$)
  17. If Right$(F$,4)=".ABK"
  18. Load F$,5
  19. Unpack 5 To 2
  20. OK=1
  21. Erase 5
  22. Else 
  23. Load Iff F$,2
  24. OK=1
  25. End If 
  26. End If 
  27. If OK=0 Then End 
  28. F$=Fsel$("*.MAP","MAGICFOREST1.MAP","Pick a Map file")
  29. If F$="" Then End 
  30. If Exist(F$)
  31. Open In 1,F$
  32. L=Lof(1)
  33. Close 1
  34. Reserve As Work 6,L
  35. Bload F$,Start(6)
  36. OK=1
  37. End If 
  38. If OK=0 Then End 
  39. TAMEVIEW[0,0,10,6,32,32]
  40. GTBLCKS
  41. Auto View Off 
  42. While OK=1
  43. Rem display the map on screen 0
  44. TAMEMAP[0,X,Y]
  45. Rem then copy it to screen 2 (front) 
  46. Screen Copy 0,0,0,320,192 To 2,0,0
  47. View 
  48. Rem check joystick for movement
  49. If Jleft(1) and X>0 Then Dec X
  50. If Jright(1) and X<MAPX-TAMEW Then Inc X
  51. If Jup(1) and Y>0 Then Dec Y
  52. If Jdown(1) and Y<MAPY-TAMEH Then Inc Y
  53. Wend 
  54. Rem the parameters for the TAMEVIEW procedure are
  55. Rem TX,TY,TW,TH,XS,YS these are
  56. Rem TX is the top left X co-ordinate of the map display area 
  57. Rem TY is the top left Y "     "     "   "   "    "      " 
  58. Rem TW is the width in tiles 
  59. Rem TH is the height in tiles
  60. Rem XS and YS are the X & Y sizes of the tiles 
  61. Procedure GTBLCKS
  62.    Rem This routine converts a screen (screen 2) into icons for use by TAME 
  63.    Rem XSIZE & YSIZE determine the block size (and thus the number of them) 
  64.    Shared XSIZE,YSIZE,XSO,YSO,ICDONE,NCOLS,REZ,SCW,SCH,MXLN
  65.    Screen 0
  66.    Get Palette(2)
  67.    Screen 2
  68.    XSO=XSIZE
  69.    YSO=YSIZE
  70.    A=0
  71.    Repeat 
  72.       B=0
  73.       Repeat 
  74.          Get Block A*(SCW/XSIZE)+B+1,B*XSIZE,A*YSIZE,XSIZE,YSIZE
  75.          Inc B
  76.       Until B>=SCW/XSIZE
  77.       Inc A
  78.    Until A>=SCH/YSIZE or A>MXLN
  79.    Screen 0
  80.    ICDONE=1
  81.    Cls 0
  82. End Proc
  83. Procedure TAMEVIEW[TX,TY,TW,TH,XS,YS]
  84.    Rem This routine sets up the window for TAME, and what size tiles you wish 
  85.    Rem to use 
  86.    Shared XSIZE,YSIZE,MAPX,MAPY,TAMEW,TAMEH,TLX,TLY,BRX,BRY
  87.    M$="TAME Map"
  88.    MAPX=Deek(Start(6)) : MAPY=Deek(Start(6)+2)
  89.    XSIZE=XS : YSIZE=YS
  90.    TLX=TX : TLY=TY
  91.    TAMEW=TW : TAMEH=TH
  92.    BRX=TLX+TW*(XSIZE-1)
  93.    BRY=TLY+TH*(YSIZE-1)
  94.    S6=Start(6)+4+MAPX*MAPY
  95.    Doke S6,XSIZE : Doke S6+2,YSIZE
  96.    Doke S6+4,TLX : Doke S6+6,TLY
  97.    Doke S6+8,TAMEW : Doke S6+10,TAMEH
  98.    Doke S6+12,BRX : Doke S6+14,BRY
  99.    A=0 : Repeat : Poke Start(6)-8+A,Asc(Mid$(M$,A+1,1)) : Inc A : Until A=8
  100. End Proc
  101. Procedure TAMEMAP[S,X,Y]
  102.    Rem This routine draws the map in the window set by the TAMEVIEW procedure 
  103.    Rem on screen S, at map co-ordinates X,Y 
  104.       Shared BL,MXTOS,XSIZE,YSIZE,TLX,TLY,TAMEW,TAMEH,BRX,BRY,MXLN
  105.    MXTOS=MXLN*320/XSIZE-1
  106.    MAPX=Deek(Start(6)) : MAPY=Deek(Start(6)+2)
  107.    S6=Start(6)+MAPX*MAPY+4
  108.    XSIZE=Deek(S6) : YSIZE=Deek(S6+2)
  109.    TLX=Deek(S6+4) : TLY=Deek(S6+6)
  110.    TAMEW=Deek(S6+8) : TAMEH=Deek(S6+10)
  111.    BRX=Deek(S6+12) : BRY=Deek(S6+14)
  112.    TEMP=Screen
  113.    Screen S
  114.    S6=Start(6)+4
  115.    WI=TAMEW*XSIZE
  116.    HI=TAMEH*YSIZE
  117.    MAPZ=MAPX*MAPY
  118.    A=0 : A2=Y*MAPX
  119.    Repeat 
  120.       A2=A2 mod MAPZ
  121.       B=0 : B2=X
  122.       Repeat 
  123. BL=Peek(S6+(B2 mod MAPX)+A2)
  124. Put Block 1+Min(MXTOS,BL),TLX+B,TLY+A
  125.          Add B,XSIZE : Inc B2
  126.       Until B>=WI
  127.       Add A,YSIZE : Add A2,MAPX
  128.    Until A>=HI
  129.    Screen Copy S,TLX,TLY,BRX,BRY To TEMP,TLX,TLY
  130.    Screen TEMP
  131. End Proc